CSimpl: A Rely-Guarantee-Based Framework for Verifying Concurrent Programs
نویسندگان
چکیده
It is essential to deal with the interference of the environment between programs in concurrent program verification. This has led to the development of concurrent program reasoning techniques such as rely-guarantee. However, the source code of the programs to be verified often involves language features such as exceptions and procedures which are not supported by the existing mechanizations of those concurrent reasoning techniques. Schirmer et al. have solved a similar problem for sequential programs by developing a verification framework in the Isabelle/HOL theorem prover called Simpl, which provides a rich sequential language that can encode most of the features in real world programming languages. However Simpl only aims to verify sequential programs, and it does not support the specification nor the verification of concurrent programs. In this paper we introduce CSimpl, an extension of Simpl with concurrency-oriented language features and verification techniques. We prove the compositionality of the CSimpl semantics and we provide inference rules for the language constructors to reason about CSimpl programs using rely-guarantee, showing that the inference rules are sound w.r.t. the language semantics. Finally, we run a case study where we use CSimpl to specify and prove functional correctness of an abstract communication model of the XtratuM partitioning separation micro-kernel.
منابع مشابه
Rely-Guarantee Based Reasoning for Message-Passing Programs1
The difficulties of verifying concurrent programs lie in their inherent non-determinism and interferences. Rely-Guarantee reasoning is one useful approach to solve this problem for its capability in formally specifying interthread interferences. However, modern verification requires better locality and modularity. It is still a great challenge to verify a message-passing program in a modular an...
متن کاملCOVERN: A Logic for Compositional Verification of Information Flow Control
Shared memory concurrency is pervasive in modern programming, including in systems that must protect highly sensitive data. Recently, verification has finally emerged as a practical tool for proving interesting security properties of real programs, particularly information flow control (IFC) security. Yet there remain no general logics for verifying IFC security of shared-memory concurrent prog...
متن کاملRely-Guarantee Based Reasoning for Message-Passing Programs
The difficulties of verifying concurrent programs lie in their inherent non-determinism and interferences. Rely-Guarantee reasoning is one useful approach to solve this problem for its capability in formally specifying inter-thread interferences. However, modern verification requires better locality and modularity. It is still a great challenge to verify a message-passing program in a modular a...
متن کاملGlobal and Local Monitors to Enforce Noninterference in Concurrent Programs
Controlling confidential information in concurrentsystems is difficult, due to covert channels resulting from inter-action between threads. This problem is exacerbated if threadsshare resources at fine granularity.In this work, we propose a novel monitoring framework toenforce strong information security in concurrent programs. Ourmonitors are hybrid, combining dynamic a...
متن کاملReasoning about concurrent programs : Refining rely - guarantee thinking
Interference is the essence of concurrency and it is what makes reasoning about concurrent programs difficult. The fundamental insight of rely-guarantee thinking is that stepwise design of concurrent programs can only be compositional in development methods that offer ways to record and reason about interference. In this way of thinking, a rely relation records assumptions about the behaviour o...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 2017